const LoginDao = require('../dao/login');
const ValidatorLogin = require('../validators/login');
const ok = require('../core/response-shortcut');
const { aseEncode}=require('../core/crypto')
const { createJWT } = require('../core/jwt')
const {COOKIEJWTNAME}= require('../config/config.js');

class loginController {
    /**
     * 创建loginController
     * @param ctx
     * @returns
     */
    static async login(ctx) {
        // 接收客户端参数
        let req = ctx.request.body;
console.log('======req===啦啦啦',req);
        //验证器,如果验证不通过,直接在验证器里报错
        await ValidatorLogin.login(req)

        //验证通过,操作数据库
        /*
         * 用户名是否存在
         * 若用户名存在,验证密码是否正确
         * 生成并返回jwt,让前端写入cookie
         */
        //返回jwt值,因前后端分离,所以由前端设置cookie
         let dbRes = await LoginDao.identifyUser(ctx);
         //dbRes为该用户的所有信息
         let jwtStr = createJWT({ 'id': aseEncode(dbRes.id+'') })
         ctx.response.status = 200;
         ctx.body = ok.json({ [COOKIEJWTNAME]: jwtStr })
    }
}
module.exports = loginController
